//给你三个整数数组 nums1、nums2 和 nums3 ，请你构造并返回一个 不同 数组，且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按
// 任意 顺序排列。
// 
//
// 示例 1： 
//
// 输入：nums1 = [1,1,3,2], nums2 = [2,3], nums3 = [3]
//输出：[3,2]
//解释：至少在两个数组中出现的所有值为：
//- 3 ，在全部三个数组中都出现过。
//- 2 ，在数组 nums1 和 nums2 中出现过。
// 
//
// 示例 2： 
//
// 输入：nums1 = [3,1], nums2 = [2,3], nums3 = [1,2]
//输出：[2,3,1]
//解释：至少在两个数组中出现的所有值为：
//- 2 ，在数组 nums2 和 nums3 中出现过。
//- 3 ，在数组 nums1 和 nums2 中出现过。
//- 1 ，在数组 nums1 和 nums3 中出现过。
// 
//
// 示例 3： 
//
// 输入：nums1 = [1,2,2], nums2 = [4,3,3], nums3 = [5]
//输出：[]
//解释：不存在至少在两个数组中出现的值。
// 
//
// 
//
// 提示： 
//
// 
// 1 <= nums1.length, nums2.length, nums3.length <= 100 
// 1 <= nums1[i], nums2[j], nums3[k] <= 100 
// 
// Related Topics 数组 哈希表 
// 👍 8 👎 0

  
package com.zwy.leetcode.editor.cn;

import java.util.*;

/**
 * @author zwy 
 */
public class TwoOutOfThree{
    public static void main(String[] args) {
        Solution solution = new TwoOutOfThree().new Solution();
        int []arr1={1,1,3,2};
        int []arr2={2,3};
        int []arr3={3};
        solution.twoOutOfThree(arr1,arr2,arr3);
      }
     
/**
 *时间复杂度为:
 * @author zwy 
 */ 
      //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public List<Integer> twoOutOfThree(int[] nums1, int[] nums2, int[] nums3) {
       Set<Integer> set1=new HashSet<>();
        Set<Integer> set2=new HashSet<>();
        Set<Integer> set3=new HashSet<>();
        List<Integer>list=new ArrayList<>();
        List<Integer>res=new ArrayList<>();
        for (int i = 0; i < nums1.length; i++) {
            set1.add(nums1[i]);
        }
        for (int i = 0; i < nums2.length; i++) {
            set2.add(nums2[i]);
        }
        for (int i = 0; i < nums3.length; i++) {
            set3.add(nums3[i]);
        }
        for (Integer integer : set1) {
                list.add(integer);
        }
        for (Integer integer : set2) {
            if(!list.contains(integer)){
                list.add(integer);
            }
            else if(res.contains(integer)){

            }
            else {
                res.add(integer);
            }
        }
        for (Integer integer : set3) {
            if(!list.contains(integer)){
                list.add(integer);
            }
            else if(res.contains(integer)){

            }
            else {
                res.add(integer);
            }
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}